AWSアカウントのセキュリティを強化する 〜 MFAの利用
よく訓練されたアップル信者、都元です。アカウント認証というのはIDとパスワードによってなされるのが一般的です。パスワードは複数の文字種を使い、数字を含め、長いモノを設定する等、各種プラクティスはあちこちで議論されていますが、そもそものアカウントの数が多くなると、厳正なパスワード管理にもどこかにほころびが出てくる可能性 *1が出て来ます。
MFAによるセキュリティ向上
そういった状況で、パスワードだけに依らないセキュリティ向上の手段として、AWSではMFA(Multi-Factor Authentication - 二要素認証)に対応しています。
具体的にどういうことかというと、ログイン時には通常のIDとパスワード *2に加えて、そのログインのタイミングで手持ちのデバイス(ハードウェア)に表示されている数字 *3を入力しなければ、認証に成功しない、という認証方式です。デバイス上の数字は一定時間毎に更新されるため、事実上、そのハードウェアが手元になければログインできない、ということになります。
MFAデバイスの種類
AWSで利用出来るMFAには「ハードウェアMFA」と「バーチャルMFA」の2種類があります。前者は液晶のついたキーホルダーのような専用ハードウェア(Ezio Time-based 6-Digit Token for use with Amazon Web Services)のことです。
後者は、スマートフォン上のアプリケーションとして実装されたMFAです。各ハードウェア毎に実装が提供されていますので、お手持ちのハードウェアに合わせて適切な実装を利用します。
MFAの利用イメージ
MFAを利用するように設定すると、IDとパスワードによる認証の後に、下記のような画面が現れます。ここで、MFAでバイスに表示された数字を入力すると、ログインが完了します。
MFAの利用方法(ルートアカウント編)
さて、では実際にMFAの利用登録を行ってみたいと思います。残念ながら手元にハードウェアMFAが無いため、今回はバーチャルMFAでいきます。私はiPhoneを使っているので、Google Authenticatorをインストールしておきましょう。
MFAの準備ができたら、ルートアカウント(非IAMアカウント)でログインし、IAMのManagement Consoleを開きます。そのページのSecurity Statusというセクションに「Manage MFA Device」というボタンがあるのでクリックしましょう。
そして、今回はバーチャルMFAを使うので「A virtual MFA device」を選択。
下図は「この機能を有効にするには、まずアプリが要るよ」という警告ですね。インストール済みですので、そのままContinueします。
次に出てくるのはQRコードです。このQRコードを、Google Authenticatorで読み込みます。
アプリ右下の「+」ボタンをタップし、さらに「バーコードをスキャン」ボタンをタップします。
QRコードを読み取ると、Google Authenticatorにこのアカウントの情報が登録されます。もう認証コード(数字)を表示していますね。アカウントの名前は「root-account-mfa-device@(アカウント名)」といった形式になっています。私のiPhoneには、既に多くのアカウントが登録されていますので、複数の認証コードがリストアップされています。
左上の時計のようなマークでカウントダウンを行っており、時間が経過すると自動的に次の認証コードを表示していきます。ここで「2つの連続した認証コード」をAWS側に伝えることで、きちんとMFAとAWSアカウントが繋がった、という確認を行います。その為の入力欄が、QRコードの下にある2つのテキストフィールドです。2つの認証コードを入力すれば、登録完了です。
Security Statusのセクションにおいて、Root Account MFA が Enabled になっていることが確認できます。一度ログアウトし、ログインを試みてみてください。IDとパスワードの後に認証コードを求められますので、今iPhoneに表示されている番号を入力すればOKです。
ちなみに、MFAによる認証を廃止する場合は、「Manage MFA Device」ボタンより「Deactivate MFA device」を選択します。
MFAの利用方法(IAMユーザアカウント編)
さて、以上でルートアカウントのMFAによる保護ができました。これと同様の手順で、IAMアカウントについてもMFAによる保護が可能です。対象となるIAMユーザを選択し、右下の「Manage MFA Device」から、同じ手順で登録ができます。
まとめ
弊社では業務でお客様のAWSアカウントをお預かりし、様々なサービスを提供しています。AWSアカウントの数は、社内検証用のものも含めるとかなりの数にのぼり、それらのアカウントの認証情報は厳正に管理する必要があります。このような仕組みは、正規の利用者(自分自身ですね)にとっては少々の手間になることではありますが、積極利用でセキュリティ事故を防いで行く必要があります。
えーー、ここまで書いておきながら、今、たった今、ボスが過去に同じテーマの記事を既に書いていたのを発見しました。意外と凹みますね、これ。
…ではorz